From 424e367d6760ddb433c392f05c5ca7265e39ff8e Mon Sep 17 00:00:00 2001 From: "Karl O. Pinc kop@karlpinc.com" Date: Wed, 22 Jul 2026 18:11:21 +0000 Subject: [PATCH] Adjust DYADS; account for unknown participant directionality Remove the TwoSided and add the Style column. --- db/schemas/lib/triggers/create/dyads.m4 | 34 ++++-- db/schemas/sokwedb/views/create/dyads.m4 | 16 ++- .../sokwedb/views/create/pantgrunts_view.m4 | 4 +- doc/diagrams/dyads.svg | 115 ++++++++++-------- doc/diagrams/pantgrunts_view.svg | 25 +++- doc/src/epilog.inc.m4 | 5 + doc/src/views/dyads.m4 | 34 +++++- include/global_constants.m4 | 8 ++ 8 files changed, 167 insertions(+), 74 deletions(-) diff --git a/db/schemas/lib/triggers/create/dyads.m4 b/db/schemas/lib/triggers/create/dyads.m4 index f411664..a345056 100644 --- a/db/schemas/lib/triggers/create/dyads.m4 +++ b/db/schemas/lib/triggers/create/dyads.m4 @@ -106,6 +106,20 @@ CREATE OR REPLACE FUNCTION dyads_insert_func () -- Initial validation of data supplied -- + -- Style must be valid + IF NEW.style <> 'sdb_directed_style' + AND NEW.style <> 'sdb_mutual_style' + AND NEW.style <> 'sdb_unk_style' THEN + RAISE EXCEPTION data_exception USING + MESSAGE = 'Error on INSERT into DYADS' + , DETAIL = 'Invalid DYADS.Style value (' + || NEW.style + || ') : ' + || _show_row() + , HINT = 'The allowed values are:' + || ' sdb_directed_style, sdb_mutual_style, and sdb_unk_style'; + END IF; + IF NEW.eid IS NULL THEN create_obs := FALSE; @@ -431,14 +445,16 @@ CREATE OR REPLACE FUNCTION dyads_insert_func () -- (Do one row at a time, just so we can check the PID values.) -- - -- Actor (or Mutual) + -- Actor (or Mutual or UNKpair) INSERT INTO roles (eid, role, participant) VALUES (target_eid ,CASE - WHEN NEW.twosided THEN - 'sdb_mutual' - ELSE + WHEN NEW.style = 'sdb_directed_style' THEN 'sdb_actor' + WHEN NEW.style = 'sdb_mutual_style' THEN + 'sdb_mutual' + ELSE -- NEW.style = 'sdb_unk_style' + 'sdb_unkpair' END ,NEW.actor); target_actor_pid := CURRVAL('roles_pid_seq'); @@ -456,14 +472,16 @@ CREATE OR REPLACE FUNCTION dyads_insert_func () || _show_row(); END IF; - -- Recipient (or Mutual) + -- Recipient (or Mutual or UNKpair) INSERT INTO roles (eid, role, participant) VALUES (target_eid ,CASE - WHEN NEW.twosided THEN - 'sdb_mutual' - ELSE + WHEN NEW.style = 'sdb_directed_style' THEN 'sdb_actee' + WHEN NEW.style = 'sdb_mutual_style' THEN + 'sdb_mutual' + ELSE -- NEW.style = 'sdb_unk_style' + 'sdb_unkpair' END ,NEW.recipient); target_recipient_pid := CURRVAL('roles_pid_seq'); diff --git a/db/schemas/sokwedb/views/create/dyads.m4 b/db/schemas/sokwedb/views/create/dyads.m4 index 784b690..31ed7a6 100644 --- a/db/schemas/sokwedb/views/create/dyads.m4 +++ b/db/schemas/sokwedb/views/create/dyads.m4 @@ -38,7 +38,7 @@ CREATE OR REPLACE VIEW dyads ( ,actor ,recipient_pid ,recipient - ,twosided + ,style ,notes ,event_notes ) @@ -59,22 +59,26 @@ CREATE OR REPLACE VIEW dyads ( ,recipients.pid AS recipient_pid ,recipients.participant AS recipient ,CASE + WHEN actors.role = 'sdb_actor' THEN + 'sdb_directed_style' WHEN actors.role = 'sdb_mutual' THEN - TRUE + 'sdb_mutual_style' ELSE - FALSE - END AS twosided + 'sdb_unk_style' + END AS style ,obs.notes ,obs.event_notes FROM obs JOIN roles AS actors ON (actors.eid = obs.eid AND (actors.role = 'sdb_actor' - OR actors.role = 'sdb_mutual')) + OR actors.role = 'sdb_mutual' + OR actors.role = 'sdb_unkpair')) JOIN roles AS recipients ON (recipients.eid = obs.eid AND (recipients.role = 'sdb_actee' - OR recipients.role = 'sdb_mutual')) + OR recipients.role = 'sdb_mutual' + OR recipients.role = 'sdb_unkpair')) WHERE (actors.role = 'sdb_actor' OR -- Without further conditions, when dyads are mutual, -- the two individuals appear as 4 rows: paired, paired diff --git a/db/schemas/sokwedb/views/create/pantgrunts_view.m4 b/db/schemas/sokwedb/views/create/pantgrunts_view.m4 index c8d058f..c5770d3 100644 --- a/db/schemas/sokwedb/views/create/pantgrunts_view.m4 +++ b/db/schemas/sokwedb/views/create/pantgrunts_view.m4 @@ -31,7 +31,7 @@ CREATE OR REPLACE VIEW pantgrunts_view ( ,recipient ,multiactors ,multirecipients - ,twosided + ,style ,commid ,pg_commid ,source @@ -54,7 +54,7 @@ CREATE OR REPLACE VIEW pantgrunts_view ( ,dyads.recipient AS recipient ,pantgrunts.multiactors AS multiactors ,pantgrunts.multirecipients AS multirecipients - ,dyads.twosided AS twosided + ,dyads.style AS style ,dyads.commid AS commid ,pantgrunts.commid AS pg_commid ,pantgrunts.source AS source diff --git a/doc/diagrams/dyads.svg b/doc/diagrams/dyads.svg index c1b13f0..7e5e7d5 100644 --- a/doc/diagrams/dyads.svg +++ b/doc/diagrams/dyads.svg @@ -689,7 +689,7 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="1.8048192" - inkscape:cx="308.0641" + inkscape:cx="302.24634" inkscape:cy="182.01269" inkscape:document-units="mm" inkscape:current-layer="layer3" @@ -882,18 +882,23 @@ xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82223px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="103.77905" - y="81.908913" + y="87.729752" id="text2436-6-4">Role = 'Actee'OR Role = 'Mutual'OR Role = 'Mutual'OR Role = 'UNKPair'The recipient (ormutual participant)observedThe observed event therecipient (ormutual participant)participated in'directed' when ROLE = 'Actor'TRUE when'mutual' when Role = 'Mutual'Role = 'Mutual''unknown' when Role = 'UNKPair'OR Role = 'Mutual'OR Role = 'Mutual'OR Role = 'UNKPair'TwoSidedStyleROLES (RECIPIENTS)PID (Recipient_PID)EIDParticipant (Recipient) + width="48.70002" + height="11.699999" + x="89.899979" + y="50.875004" /> diff --git a/doc/diagrams/pantgrunts_view.svg b/doc/diagrams/pantgrunts_view.svg index d6799c5..036f6eb 100644 --- a/doc/diagrams/pantgrunts_view.svg +++ b/doc/diagrams/pantgrunts_view.svg @@ -689,8 +689,8 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="2.5523998" - inkscape:cx="232.72216" - inkscape:cy="152.2097" + inkscape:cx="209.60666" + inkscape:cy="152.60149" inkscape:document-units="mm" inkscape:current-layer="layer3" inkscape:document-rotation="0" @@ -1220,6 +1220,27 @@ d="m 33.255467,71.511416 v 0" id="path24935-7-0-1-3-6" inkscape:connector-type="polyline" + inkscape:connector-curvature="0" />Style